package asteroids.factory;

import asteroids.engine.Utils;

public class ShapeLib
{
    public static final int shipLength = 12;

    public static final Utils.PolarCoordinate[] WEDGE_SHAPE = {
            Utils.createPolarCoordinate(0, shipLength * 5 / 6),
            Utils.createPolarCoordinate(135, shipLength * 3.0 / 5),
            Utils.createPolarCoordinate(180, shipLength * 1 / 6),
            Utils.createPolarCoordinate(225.0, shipLength * 3.0 / 5) };
    public static final int WEDGE_POINTS[] = { 0 };

    public static final Utils.PolarCoordinate[] HOURGLASS_SHAPE = {
            Utils.createPolarCoordinate(20, 4), Utils.createPolarCoordinate(20, 8),
            Utils.createPolarCoordinate(135, 8), Utils.createPolarCoordinate(135, 4),
            Utils.createPolarCoordinate(225, 4), Utils.createPolarCoordinate(225, 8),
            Utils.createPolarCoordinate(340, 8), Utils.createPolarCoordinate(340, 4) };
    public static final int HOURGLASS_POINTS[] = { 0, 7 };

    public static final Utils.PolarCoordinate[] TRIDENT_SHAPE = {
            Utils.createPolarCoordinate(0, shipLength * 5 / 6),
            Utils.createPolarCoordinate(55, shipLength * 1.0 / 5),
            Utils.createPolarCoordinate(65, shipLength * 2.5 / 5),
            Utils.createPolarCoordinate(160, shipLength * 3.0 / 5),
            Utils.createPolarCoordinate(200.0, shipLength * 3.0 / 5),
            Utils.createPolarCoordinate(295, shipLength * 2.5 / 5),
            Utils.createPolarCoordinate(305, shipLength * 1.0 / 5) };
    public static final int TRIDENT_POINTS[] = { 0, 2, 5 };

    public static final Utils.PolarCoordinate[] JET_SHAPE = {

    };

    public static final Utils.PolarCoordinate[] ALIEN = { Utils.createPolarCoordinate(0, 10),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(5, 5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-5, 5)),
            Utils.createPolarCoordinate(180, 10),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-4, -4)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-3, -7)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(3, -7)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(4, -4)) };

    public static final Utils.PolarCoordinate[] BROODHOME_SHAPE0 = {
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(8 - 16, 6 - 18)).rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(8 - 16, 0 - 18)).rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(8 - 16, 6 - 18)).rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(9 - 16, 6 - 18)).rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(11 - 16, 8 - 18)).rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(21 - 16, 8 - 18)).rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(23 - 16, 6 - 18)).rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(24 - 16, 6 - 18)).rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(24 - 16, 0 - 18)).rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(24 - 16, 6 - 18)).rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(29 - 16, 10 - 18))
                    .rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(29 - 16, 5 - 18)).rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(29 - 16, 10 - 18))
                    .rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(24 - 16, 6 - 18)).rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(25 - 16, 6 - 18)).rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(32 - 16, 15 - 18))
                    .rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(32 - 16, 19 - 18))
                    .rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(19 - 16, 34 - 18))
                    .rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(13 - 16, 34 - 18))
                    .rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(0 - 16, 19 - 18)).rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(0 - 16, 15 - 18)).rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(7 - 16, 6 - 18)).rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(8 - 16, 6 - 18)).rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(3 - 16, 10 - 18)).rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(3 - 16, 5 - 18)).rotateBy(90),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(3 - 16, 10 - 18)).rotateBy(90) };
    public static final int BROODHOME_POINTS0[] = { 0 };

    public static final Utils.PolarCoordinate[] BROODHOME_SHAPE = {
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(10.0, -1.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(11.0, -2.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(11.0, -4.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(14.0, -7.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, -7.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, -6.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, -7.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(19.0, -7.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(19.0, -6.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(19.0, -8.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(19.0, -7.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, -7.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, -8.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, -7.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(14.0, -7.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(9.0, -12.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(13.0, -12.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(13.0, -11.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(13.0, -12.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, -12.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, -11.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, -13.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, -12.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(13.0, -12.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(13.0, -13.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(13.0, -12.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(9.0, -12.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-1.0, -15.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(0.0, -13.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-5.0, -13.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-4.0, -11.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-11.0, -10.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-9.0, -9.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-16.0, -7.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-14.0, -7.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-14.0, -5.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-16.0, -3.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-19.0, -3.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-16.0, -2.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-16.0, 2.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-19.0, 3.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-16.0, 3.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-14.0, 5.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-14.0, 7.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-16.0, 7.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-9.0, 9.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-11.0, 10.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-4.0, 11.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-5.0, 13.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(0.0, 13.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-1.0, 15.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(9.0, 12.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(13.0, 12.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(13.0, 13.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(13.0, 12.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, 12.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, 13.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, 11.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, 12.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(13.0, 12.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(13.0, 11.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(13.0, 11.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(9.0, 12.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(14.0, 7.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, 7.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, 8.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, 7.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(19.0, 7.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(19.0, 8.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(19.0, 6.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(19.0, 7.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, 7.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, 6.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, 7.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(14.0, 7.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(11.0, 4.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(11.0, 2.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(10.0, 1.5)) };
    public static final Utils.PolarCoordinate[][] BROODHOME_BLING = {
            { Utils.polarFromCartesian(Utils.createCartesianCoordinate(4.0, -4.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(7.0, -1.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(7.0, 1.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(4.0, 4.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(1.0, 4.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-2.0, 1.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-2.0, -1.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(1.0, -4.5)) },
            { Utils.polarFromCartesian(Utils.createCartesianCoordinate(-8.0, -3.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-6.0, -1.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-6.0, 1.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-8.0, 3.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-11.0, 3.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-13.0, 1.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-13.0, -1.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-11.0, -3.5)) },
            { Utils.polarFromCartesian(Utils.createCartesianCoordinate(9.0, -9.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(10.0, -8.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(10.0, -6.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(9.0, -5.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(7.0, -5.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(6.0, -6.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(6.0, -8.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(7.0, -9.5)) },
            { Utils.polarFromCartesian(Utils.createCartesianCoordinate(3.0, -11.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(4.0, -10.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(4.0, -8.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(3.0, -7.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(1.0, -7.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(0.0, -8.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(0.0, -10.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(1.0, -11.5)) },
            { Utils.polarFromCartesian(Utils.createCartesianCoordinate(-3.0, -8.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-2.0, -7.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-2.0, -5.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-3.0, -4.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-5.0, -4.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-6.0, -5.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-6.0, -7.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-5.0, -8.5)) },
            { Utils.polarFromCartesian(Utils.createCartesianCoordinate(9.0, 5.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(10.0, 6.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(10.0, 8.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(9.0, 9.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(7.0, 9.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(6.0, 8.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(6.0, 6.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(7.0, 5.5)) },
            { Utils.polarFromCartesian(Utils.createCartesianCoordinate(3.0, 7.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(4.0, 8.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(4.0, 10.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(3.0, 11.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(1.0, 11.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(0.0, 10.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(0.0, 8.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(1.0, 7.5)) },
            { Utils.polarFromCartesian(Utils.createCartesianCoordinate(-3.0, 4.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-2.0, 5.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-2.0, 7.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-3.0, 8.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-5.0, 8.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-6.0, 7.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-6.0, 5.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-5.0, 4.5)) },
            { Utils.polarFromCartesian(Utils.createCartesianCoordinate(9.0, -3.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(11.0, -5.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(11.0, -9.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(9.0, -11.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(7.0, -11.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(6.0, -10.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(3.0, -13.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(1.0, -13.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-2.0, -10.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-5.0, -10.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-9.0, -6.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-11.0, -6.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-15.0, -2.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-15.0, 2.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-11.0, 6.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-9.0, 6.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-5.0, 10.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-2.0, 10.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(1.0, 13.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(3.0, 13.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(6.0, 10.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(7.0, 11.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(9.0, 11.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(11.0, 9.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(11.0, 5.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(9.0, 3.5)) } };
    public static final int[] BROODHOME_HARDPOINTS = { 0 };

    public static final Utils.PolarCoordinate[] CRUISER_SHAPE = {
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(21.0, 0.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(21.0, -1.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(19.0, -1.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(19.0, -3.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(17.0, -5.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(14.0, -5.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(10.0, -1.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(6.0, -1.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(3.0, -4.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(6.0, -4.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(6.0, -5.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-6.0, -5.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-6.0, -4.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(1.0, -4.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(5.0, -1.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-7.0, -1.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-10.0, -4.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-8.0, -4.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-8.0, -5.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-20.0, -5.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-20.0, -4.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-12.0, -4.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-9.0, -1.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-17.0, -1.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-17.0, 1.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-9.0, 1.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-12.0, 4.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-20.0, 4.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-20.0, 5.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-8.0, 5.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-8.0, 4.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-10.0, 4.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-7.0, 1.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(5.0, 1.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(1.0, 4.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-6.0, 4.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-6.0, 5.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(6.0, 5.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(6.0, 4.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(3.0, 4.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(6.0, 1.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(10.0, 1.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(14.0, 5.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(17.0, 5.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(19.0, 3.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(19.0, 1.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(21.0, 1.0)) };
    public static final Utils.PolarCoordinate[][] CRUISER_BLING = { {
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(17.0, -1.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, -2.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(15.0, -2.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(13.0, 0.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(15.0, 2.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(16.0, 2.0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(17.0, 1.0)) } };
    public static final int[] CRUISER_HARDPOINTS = { 0 };

    public static final Utils.PolarCoordinate[] DREADNAUGHT_SHAPE = {
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(17.0, 0.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(17.0, -2.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(11.0, -8.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(9.0, -8.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(5.0, -4.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-4.0, -4.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-4.0, -9.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(5.0, -9.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(6.0, -10.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(6.0, -12.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(5.0, -13.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-8.0, -13.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-10.0, -12.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-12.0, -11.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-14.0, -9.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-6.0, -9.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-6.0, -4.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-11.0, -4.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-12.0, -3.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-15.0, -6.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-17.0, -4.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-17.0, 4.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-15.0, 6.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-12.0, 3.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-11.0, 4.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-6.0, 4.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-6.0, 9.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-14.0, 9.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-12.0, 11.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-10.0, 12.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-8.0, 13.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(5.0, 13.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(6.0, 12.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(6.0, 10.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(5.0, 9.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-4.0, 9.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-4.0, 4.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(5.0, 4.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(9.0, 8.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(11.0, 8.5)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(17.0, 2.5)) };
    public static final Utils.PolarCoordinate[][] DREADNAUGHT_BLING = {
            { Utils.polarFromCartesian(Utils.createCartesianCoordinate(11.0, -6.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(11.0, -5.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(13.0, -3.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(13.0, 3.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(11.0, 5.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(11.0, 6.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(14.0, 3.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(14.0, -3.5)) },
            { Utils.polarFromCartesian(Utils.createCartesianCoordinate(3.0, -13.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(3.0, -9.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(4.0, -9.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(4.0, -13.5)) },
            { Utils.polarFromCartesian(Utils.createCartesianCoordinate(3.0, 9.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(3.0, 13.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(4.0, 13.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(4.0, 9.5)) },
            { Utils.polarFromCartesian(Utils.createCartesianCoordinate(-5.0, -2.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-8.0, 0.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-5.0, 3.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-2.0, 0.5)) },
            { Utils.polarFromCartesian(Utils.createCartesianCoordinate(-15.0, -6.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-17.0, -4.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-17.0, 4.5)),
                    Utils.polarFromCartesian(Utils.createCartesianCoordinate(-15.0, 6.5)) } };
    public static final int[] DREADNAUGHT_HARDPOINTS = { 0 };

    public static final Utils.PolarCoordinate[] TERMINATOR_SHAPE = {
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(4, 0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(1, -3)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(3, -4)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(5, -6)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(8, -7)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(6, -8)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(2, -8)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-2, -6)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-4, -4)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-5, -2)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-5, 2)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-4, 4)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-2, 6)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(2, 8)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(6, 8)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(8, 7)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(5, 6)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(3, 4)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(1, 3)) };
    public static final Utils.PolarCoordinate[][] TERMINATOR_BLING = { {
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(4, 0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(2, -2)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(0, -2)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(-4, 0)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(0, 2)),
            Utils.polarFromCartesian(Utils.createCartesianCoordinate(2, 2)) } };
    public static int TERMINATOR_HARDPOINTS[] = { 4, 15 };

    public static int[][] shipPoints = { WEDGE_POINTS, HOURGLASS_POINTS, TRIDENT_POINTS };

    public static final Utils.PolarCoordinate[] CLASSIC_SHAPE = WEDGE_SHAPE;
    public static final Utils.PolarCoordinate[][] CLASSIC_BLING = {};
    public static final int[] CLASSIC_HARDPOINTS = { 0 };
    public static final double CLASSIC_TURN_SPEED = 180 / Utils.FRAMES_PER_SECOND;
    public static final double CLASSIC_ACCELERATION = 180 / Utils.FRAMES_PER_SECOND
            / Utils.FRAMES_PER_SECOND;
    public static final double CLASSIC_ENERGY_REGEN = 2.5 / Utils.FRAMES_PER_SECOND;
    public static final int CLASSIC_MAX_ENERGY = 10;
    public static final int CLASSIC_ENERGY_REGEN_DELAY = 1;
    public static final int CLASSIC_INTEGRITY = 10;
    public static final int CLASSIC_MASS = 5;

    public static final double BROODHOME_TURN_SPEED = 76.68 / Utils.FRAMES_PER_SECOND;
    public static final double BROODHOME_ACCELERATION = 32.4 / Utils.FRAMES_PER_SECOND
            / Utils.FRAMES_PER_SECOND;
    public static final double BROODHOME_ENERGY_REGEN = 2.5 / Utils.FRAMES_PER_SECOND;
    public static final int BROODHOME_MAX_ENERGY = 30;
    public static final int BROODHOME_ENERGY_REGEN_DELAY = 0;
    public static final int BROODHOME_INTEGRITY = 36;
    public static final int BROODHOME_MASS = 10;

    public static final double CRUISER_TURN_SPEED = 337.5 / Utils.FRAMES_PER_SECOND;
    public static final double CRUISER_ACCELERATION = 28.8 / Utils.FRAMES_PER_SECOND
            / Utils.FRAMES_PER_SECOND;
    public static final double CRUISER_ENERGY_REGEN = (0.111 * 24) / Utils.FRAMES_PER_SECOND;
    public static final int CRUISER_MAX_ENERGY = 18;
    public static final int CRUISER_ENERGY_REGEN_DELAY = 0;
    public static final int CRUISER_INTEGRITY = 18;
    public static final int CRUISER_MASS = 6;

    public static final double TERMINATOR_TURN_SPEED = 222.75 / Utils.FRAMES_PER_SECOND;
    public static final double TERMINATOR_ACCELERATION = 45d / Utils.FRAMES_PER_SECOND
            / Utils.FRAMES_PER_SECOND;
    // public static final double TERMINATOR_ENERGY_REGEN = 6.96 /
    // Utils.FRAMES_PER_SECOND;
    public static final double TERMINATOR_ENERGY_REGEN = 2;
    public static final int TERMINATOR_MAX_ENERGY = 10;
    // public static final int TERMINATOR_ENERGY_REGEN_DELAY = 0;
    public static final double TERMINATOR_ENERGY_REGEN_DELAY = ((2d / 0.29) / 24)
            * Utils.FRAMES_PER_SECOND;
    public static final int TERMINATOR_INTEGRITY = 20;
    public static final int TERMINATOR_MASS = 3;

    public static final double DREADNAUGHT_TURN_SPEED = (22.5 * 0.2) * 24 / Utils.FRAMES_PER_SECOND;
    public static final double DREADNAUGHT_ACCELERATION = (((30 / 4) * .2) * 24)
            / Utils.FRAMES_PER_SECOND / Utils.FRAMES_PER_SECOND;
    public static final double DREADNAUGHT_ENERGY_REGEN = (0.14 * 24) / Utils.FRAMES_PER_SECOND;
    public static final int DREADNAUGHT_MAX_ENERGY = 42;
    public static final double DREADNAUGHT_ENERGY_REGEN_DELAY = 0;
    public static final int DREADNAUGHT_INTEGRITY = 42;
    public static final int DREADNAUGHT_MASS = 10;

    // public static final double _TURN_SPEED = / Utils.FRAMES_PER_SECOND;
    // public static final double _ACCELERATION = / Utils.FRAMES_PER_SECOND
    // / Utils.FRAMES_PER_SECOND;
    // public static final double _ENERGY_REGEN = / Utils.FRAMES_PER_SECOND;
    // public static final int _MAX_ENERGY = ;
    // public static final double _ENERGY_REGEN_DELAY = ;
    // public static final int _INTEGRITY = ;
    // public static final int _MASS = ;

    public static Utils.PolarCoordinate[][] shipShapes = { WEDGE_SHAPE, HOURGLASS_SHAPE,
            TRIDENT_SHAPE };

    public enum ShipType
    {
        CLASSIC, BROODHOME, CRUISER, DREADNAUGHT, TERMINATOR
    }

    // new ShipConfig(_SHAPE, _BLING,
    // _HARDPOINTS, _TURN_SPEED, _ACCELERATION, _ENERGY_REGEN,
    // _MAX_ENERGY, _ENERGY_REGEN_DELAY, _INTEGRITY)

    public static ShipConfig[] shipConfigs = {
            new ShipConfig(CLASSIC_SHAPE, CLASSIC_BLING, CLASSIC_HARDPOINTS, CLASSIC_TURN_SPEED,
                    CLASSIC_ACCELERATION, CLASSIC_ENERGY_REGEN, CLASSIC_MAX_ENERGY,
                    CLASSIC_ENERGY_REGEN_DELAY, CLASSIC_INTEGRITY, CLASSIC_MASS),
            new ShipConfig(BROODHOME_SHAPE, BROODHOME_BLING, BROODHOME_HARDPOINTS,
                    BROODHOME_TURN_SPEED, BROODHOME_ACCELERATION, BROODHOME_ENERGY_REGEN,
                    BROODHOME_MAX_ENERGY, BROODHOME_ENERGY_REGEN_DELAY, BROODHOME_INTEGRITY,
                    BROODHOME_MASS),
            new ShipConfig(CRUISER_SHAPE, CRUISER_BLING, CRUISER_HARDPOINTS, CRUISER_TURN_SPEED,
                    CRUISER_ACCELERATION, CRUISER_ENERGY_REGEN, CRUISER_MAX_ENERGY,
                    CRUISER_ENERGY_REGEN_DELAY, CRUISER_INTEGRITY, CRUISER_MASS),
            new ShipConfig(DREADNAUGHT_SHAPE, DREADNAUGHT_BLING, DREADNAUGHT_HARDPOINTS,
                    DREADNAUGHT_TURN_SPEED, DREADNAUGHT_ACCELERATION, DREADNAUGHT_ENERGY_REGEN,
                    DREADNAUGHT_MAX_ENERGY, DREADNAUGHT_ENERGY_REGEN_DELAY, DREADNAUGHT_INTEGRITY,
                    DREADNAUGHT_MASS),
            new ShipConfig(TERMINATOR_SHAPE, TERMINATOR_BLING, TERMINATOR_HARDPOINTS,
                    TERMINATOR_TURN_SPEED, TERMINATOR_ACCELERATION, TERMINATOR_ENERGY_REGEN,
                    TERMINATOR_MAX_ENERGY, TERMINATOR_ENERGY_REGEN_DELAY, TERMINATOR_INTEGRITY,
                    TERMINATOR_MASS) };
}

class ShipConfig
{
    public final Utils.PolarCoordinate[] shape;
    public final Utils.PolarCoordinate[][] bling;
    public final int[] hardPoints;
    public final double turnSpeed;
    public final double acceleration;
    public final int maxEnergy;
    public final double energyRegen;
    public final double regenDelay;
    public final int integrity;
    public final int mass;

    public ShipConfig(Utils.PolarCoordinate[] shape, Utils.PolarCoordinate[][] bling,
            int[] hardPoints, double turnSpeed, double acceleration, double energyRegen,
            int maxEnergy, double regenDelay, int integrity, int mass)
    {
        this.shape = shape;
        this.bling = bling;
        this.hardPoints = hardPoints;
        this.turnSpeed = turnSpeed;
        this.acceleration = acceleration;
        this.energyRegen = energyRegen;
        this.maxEnergy = maxEnergy;
        this.regenDelay = regenDelay;
        this.integrity = integrity;
        this.mass = mass;
    }
}
